// 生成随机验证码
export function generateCaptcha(length = 4) {
  const chars = 'ABCDEFGHJKMNPQRSTUVWXYZabcdefghjkmnpqrstuvwxyz23456789'
  let captcha = ''
  for (let i = 0; i < length; i++) {
    captcha += chars.charAt(Math.floor(Math.random() * chars.length))
  }
  return captcha
}

// 生成验证码图片
export function generateCaptchaImage(text, width = 150, height = 50) {
  // 创建 canvas 元素
  const canvas = document.createElement('canvas')
  canvas.width = width
  canvas.height = height
  const ctx = canvas.getContext('2d')

  // 设置背景
  ctx.fillStyle = '#f0f0f0'
  ctx.fillRect(0, 0, width, height)

  // 添加干扰线我啊
  for (let i = 0; i < 10; i++) {
    ctx.strokeStyle = getRandomColor()
    ctx.beginPath()
    ctx.moveTo(Math.random() * width, Math.random() * height)
    ctx.lineTo(Math.random() * width, Math.random() * height)
    ctx.stroke()
  }

  // 添加干扰点
  for (let i = 0; i < 60; i++) {
    ctx.fillStyle = getRandomColor()
    ctx.beginPath()
    ctx.arc(Math.random() * width, Math.random() * height, 1, 0, 2 * Math.PI)
    ctx.fill()
  }

  // 绘制文字
  ctx.font = 'bold 24px Arial'
  ctx.textBaseline = 'middle'

  // 为每个字符使用不同的颜色
  const chars = text.split('');
  const charWidth = width / chars.length;

  for (let i = 0; i < chars.length; i++) {
    const x = (width - (charWidth * (chars.length - 1))) / 2 + (charWidth * i);
    const y = height / 2;

    // 绘制文字阴影效果
    ctx.fillStyle = '#999';
    ctx.fillText(chars[i], x + 1, y + 1);

    // 绘制主要文字
    ctx.fillStyle = getRandomColor();
    ctx.fillText(chars[i], x, y);
  }

  return canvas.toDataURL('image/png')
}

// 获取随机颜色
function getRandomColor() {
  const colors = [
    '#FF6666', '#FFB366', '#FFFF66', '#66FF66',
    '#66B2FF', '#6666FF', '#B266FF', '#FF66B2',
    '#FF0000', '#FF9900', '#FFFF00', '#00FF00',
    '#00FFFF', '#0000FF', '#9900FF', '#FF00FF'
  ];
  return colors[Math.floor(Math.random() * colors.length)];
}
